package com.sq.partner.manager.service;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import com.sq.partner.manager.mybatis.model.CoreDept;
import com.sq.partner.manager.mybatis.model.GatewayChannelInfo;
import com.sq.partner.manager.mybatis.model.GatewayUser;
import com.sq.partner.manager.mybatis.model.TradAgentInfo;
import com.sq.partner.manager.mybatis.model.TradAgentInfoRela;
import com.sq.partner.manager.mybatis.model.TradInsuPlan;
import com.sq.partner.manager.mybatis.model.TradProdInst;
import com.sq.partner.manager.util.Page;

public interface IGatewayInsureService    extends BaseService  {
	public Page<TradInsuPlan> queryTradInsuPlanPage(Page<TradInsuPlan> page) throws SQLException;
	
	

	/**
	 * 查询交易系统 所有产品
	 * @param page
	 * @return
	 * @throws SQLException
	 */
	Page<TradProdInst> queryPageForTradProdInst(Page<TradProdInst> page)
			throws SQLException;
	
	
	/**
	 * 分页查询出单机构
	 * @param page
	 * @return
	 * @throws Exception
	 */
	Page<CoreDept> queryPageForCoreDept(Page<CoreDept> page,String partnerNo) throws Exception;
	/**
	 * 分页查询出单机构
	 * @param page
	 * @return
	 * @throws Exception
	 */
	Page<CoreDept> queryPageForCoreDeptJSCD(Page<CoreDept> page,String partnerNo) throws Exception;
	/**
	 *  广东费用跟单 查询机构列表
	 * @param page
	 * @return
	 * @throws Exception
	 */
	Page<CoreDept> queryPageDept(Page<CoreDept> page,String deptCode) throws Exception;
	
	/**
	 * 查询 “ 新业务来源”
	 * @param map
	 * @return
	 * @throws Exception
	 */
	List<TradInsuPlan> queryNewBSNS(Map<String,String> map) throws Exception;


	/**
	 * 添加 “投保方案”
	 * @param insuplan prod
	 * @return
	 * @throws Exception
	 */
	boolean addTradInsuPlan(TradInsuPlan insuplan) throws Exception;
	
	
	/**
	 * 删除 “投保方案”
	 * @param insuplan
	 * @return
	 * @throws SQLException
	 */
	boolean delTradInsuPlan(TradInsuPlan insuplan) throws Exception;
	
	/**
	 * 根据投保方案号，获取该方案详细信息
	 * @param insuplan
	 * @return
	 * @throws SQLException
	 */
	TradInsuPlan queryTradInsuPlanInfo(TradInsuPlan insuplan) throws Exception;
	
	
	
	/**
	 * 根据投保方案号，获取该方案详细信息map形式
	 * @param insuplan
	 * @return
	 * @throws SQLException
	 */
	Map<String,Object> queryMapTradInsuPlanInfo(TradInsuPlan insuplan) throws Exception;
	
	
	/**
	 * 修改投保方案信息
	 * @param insuplan
	 * @return
	 * @throws SQLException
	 */
	boolean updateTradInsuPlanInfo(TradInsuPlan insuplan) throws Exception;
	
	
	/**
	 * 获取 “投保方案”的最大方案号，以此作为下个方案号的基础，每次累加1
	 * @param insuplan
	 * @return
	 * @throws Exception
	 */
	TradInsuPlan getMaxInsuPlanNo(TradInsuPlan insuplan) throws Exception;

	/**
	 * 查询所有合作伙伴
	 * @param page
	 * @return
	 * @throws Exception
	 */
	public Page<GatewayChannelInfo> queryPageForGatewayChannelInfo(
			Page<GatewayChannelInfo> page)throws Exception ;
	
	/**
	 * 查询此合作伙伴配置的所有个人类型的代理信息
	 * @param page map
	 * @return
	 * @throws Exception
	 */
	public Page queryPageForTradAgentInfo(Page<TradAgentInfo> page,Map<String,Object> map) throws Exception;
	
	/**
	 * 查询此合作伙伴配置的所有个人类型的代理信息edit时
	 * @param page channelCode
	 * @return
	 * @throws Exception
	 */
	public Page queryPageForTradAgentInfoEdit(Page page,Map<String,Object> map) throws Exception;
	
	/**
	 * 根据方案 号获取相关代理信息
	 * @param insuPlanNo
	 * @return
	 * @throws Exception
	 */
	public List<Map> queryTradAgentInfoByInsuPlanNo(String  insuPlanNo)throws Exception;
	
	
	/**
	 * 添加代理信息
	 * @param insuplan
	 * @param prod
	 * @param gatewayuser
	 * @param agentTypeList
	 * @return
	 * @throws Exception
	 */
	boolean addProxyInfo(String insuPlanNo,GatewayUser gatewayuser,String agentTypeList) throws Exception;
	
	/**
	 * 更新代理信息
	 * @param insuplan
	 * @param prod
	 * @param gatewayuser
	 * @param agentTypeList
	 * @return
	 * @throws Exception
	 */
	boolean updateProxyInfo(String insuPlanNo,GatewayUser gatewayuser,String agentTypeList) throws Exception;
	
	
	/**
	 * 复制添加 “投保方案”
	 * @param insuplan oldPlanNo ifCopy
	 * @return
	 * @throws Exception
	 */
	boolean copyAddTradInsuPlan(TradInsuPlan insuplan,String oldPlanNo, boolean isCopy) throws Exception;
	
	/**
	 * 根据方案号判断配置信息是否为空
	 * @param insuPlanNo
	 * @return
	 * @throws Exception
	 */
	boolean proxyInfoIsEmpty(String insuPlanNo) throws Exception;
	
	boolean updateTradInsuPlanApplicationNo(TradInsuPlan insuplan) throws Exception;
	/**删除联合出单方案已配置的代理信息*/
	public boolean deleteCommPlanRate(Map<String, Object> map) throws Exception;
	/**删除联合出单方案已配置的代理信息界面配置*/
	public boolean deleteCommPlanRate1(Map<String, Object> map) throws Exception;
	/**批量更新联合出单方案配置的代理同时删除原配置方案*/
	public boolean addTradAgentInfoRelaBach(Map<String, Object> map, List<TradAgentInfoRela>  tradAgentInfoRelas)throws Exception;
}
